#include <iostream>
#include <deque>

template <typename T>
void Print(const T &v)
{
    for (auto ite = v.begin(); ite != v.end(); ite++)
    {
        std::cout << *ite << " ";
    }
    std::cout << std::endl;
}

// deque容器能够头插头删，功能比vector更强
// 但是deque容器平时几乎不会用到，因为内存的利用率比较低
// 在内存中申请一块空间，deque不会从头开始放数据，而是在前面留几个位置，这样头插的时候就是O(1)了
// 所以deque容器的空间利用率有点低，从而导致扩容的次数会比vector多
// 用的最多的数组容器还是vector
int main()
{
    std::deque<int> d;
    for(int i = 0; i < 10; i++)
    {
        // 尾插
        d.push_back(i + 1);
    }

    for(int i = 0; i < 10; i++)
    {
        // 头插
        d.push_front(i + 1);
    }
    Print(d);
    
    // 头删
    d.pop_front();
    Print(d);

    return 0;
}